home *** CD-ROM | disk | FTP | other *** search
/ Aminet 38 / Aminet 38 (2000)(Schatztruhe)[!][Aug 2000].iso / Aminet / gfx / ifx / MagicRegion.lha / Magic_Regions.ifx next >
Encoding:
Text File  |  2000-06-05  |  3.3 KB  |  126 lines

  1. /*
  2.  * Arexx Program created by Cary Driscoll
  3.  *
  4.  * $VER: Magic Regions 1.1 (4.6.00)
  5.  */
  6.  
  7. OPTIONS RESULTS
  8.  
  9. /* Find out what version of ImageFX is being used */
  10. GetVersion
  11. PARSE VAR RESULT name ifx_version .
  12.  
  13. /* Quit if the program is older than IFX 3.0 */
  14. IF ifx_version < 3 THEN DO
  15.     RequestNotify "Sorry, IFX "||ifx_version||" is too old."
  16.     EXIT
  17. END
  18.  
  19. GetPreview
  20. PARSE VAR RESULT prev_name
  21. If prev_name = "SuperAmiga" THEN DO
  22.     RequestNotify "Sorry, you need to use a Windowed preview."
  23.     EXIT
  24. END
  25.  
  26. GetMain
  27. IF rc ~= 0 THEN DO
  28.     RequestNotify "Sorry, you need to open a buffer first."
  29.     EXIT
  30. END
  31.  
  32. /* Retrieve previous values from the environment */
  33. closeness = GETCLIP('IFX_M_R_Closeness')
  34. newr      = GETCLIP('IFX_M_R_NewR')
  35. newg      = GETCLIP('IFX_M_R_NewG')
  36. newb      = GETCLIP('IFX_M_R_NewB')
  37. checking  = GETCLIP('IFX_M_R_Checking')
  38. inverting = GETCLIP('IFX_M_R_Inverting')
  39.  
  40. /* Defaults if empty values are returned from the environment */
  41. IF closeness = '' THEN closeness = 30
  42. IF newr      = '' THEN newr      = 0
  43. IF newg      = '' THEN newg      = 0
  44. IF newb      = '' THEN newb      = 0
  45. IF checking  = '' THEN checking  = 1
  46. IF inverting = '' THEN inverting = 0
  47.  
  48. GetPalette '-1'
  49. PARSE VAR RESULT r g b
  50.  
  51. /* Prepare gadgets for the complex requester */
  52. Gadget.1 = 'SLIDER 100 8  100 10 "Red" IN='||r||' 0 255 LV=%-3ld'
  53. Gadget.2 = 'SLIDER 100 18 100 10 "Green" IN='||g||' 0 255 LV=%-3ld'
  54. Gadget.3 = 'SLIDER 100 28 100 10 "Blue" IN='||b||' 0 255 LV=%-3ld'
  55. Gadget.4 = 'SLIDER 100 48 100 10 "New Red" IN='||newr||' 0 255 LV=%-3ld'
  56. Gadget.5 = 'SLIDER 100 58 100 10 "New Green" IN='||newg||' 0 255 LV=%-3ld'
  57. Gadget.6 = 'SLIDER 100 68 100 10 "New Blue" IN='||newb||' 0 255 LV=%-3ld'
  58. Gadget.7 = 'SLIDER 100 88 100 10 "Closeness" IN='||closeness||' 0 255 LV=%-3ld'
  59. Gadget.8 = 'CHECK 35 108 10 10 "Just change the colors?" IN='||checking
  60. Gadget.9 = 'CHECK 35 119 10 10 "Create inverted region?" IN='||inverting
  61. Gadget.10 = 'END'
  62.  
  63. /* Enable complex requester using defined gadgets */
  64. NewComplexRequest '"Magic Regions"' Gadget 250 141
  65. IF rc ~= 0 THEN EXIT
  66.  
  67. /* Get results from the complex requester and store them in the variables */
  68. r = result.1
  69. g = result.2
  70. b = result.3
  71. newr = result.4
  72. newg = result.5
  73. newb = result.6
  74. closeness = result.7
  75. checking = result.8
  76. inverting = result.9
  77.  
  78. /* Store variables in the environment for next use of this script */
  79. CALL SETCLIP('IFX_M_R_Closeness',closeness)
  80. CALL SETCLIP('IFX_M_R_NewR',newr)
  81. CALL SETCLIP('IFX_M_R_NewG',newg)
  82. CALL SETCLIP('IFX_M_R_NewB',newb)
  83. CALL SETCLIP('IFX_M_R_Checking',checking)
  84. CALL SETCLIP('IFX_M_R_Inverting',inverting)
  85.  
  86. IF checking THEN DO
  87.     Hook ChangeColor r g b newr newg newb closeness
  88.     EXIT
  89. END
  90.  
  91. Buffer2Swap
  92. Swap
  93. Hook ChangeColor r g b 0 0 0 closeness
  94. CreateLayer FromSwap
  95. Hook ChangeColor r g b 255 255 255 closeness
  96. Negative
  97. LayerBlend 255
  98. LayerMode XOR
  99. FlattenLayers
  100. IF inverting THEN Negative
  101. ColorSpace RGB
  102. Palette 8
  103. GetPalette 0
  104. PARSE VAR RESULT zeror zerog zerob
  105. SetPalette 0 255 255 255
  106. GetPalette 1
  107. PARSE VAR RESULT oner oneg oneb
  108. SetPalette 1 0 0 0
  109. LockRange 0 ON
  110. SetRender Foreign
  111. Render Mode LORES NOLACE
  112. Render Monitor DEFAULT
  113. Render Colors 2
  114. Render Dither 0 0 0
  115. Render Go
  116. SaveRenderedAs ILBM "RAM:T/temp_region"  
  117. LockRange 0 OFF
  118. SetPalette 0 zeror zerog zerob
  119. SetPalette 1 oner oneg oneb
  120. Palette 1
  121. Swap
  122. KillSwap
  123. Region Free
  124. LoadMask "RAM:T/temp_region"
  125. ADDRESS COMMAND 'Delete RAM:T/temp_region' QUIET
  126.